feat(editor): add editable cursor motion paths - #113
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Ten of the files this draft touches are gone. Suggestion: close this draft and rebuild the cursor-motion editor against the v4 editor in |
Summary
Why
The existing cursor renderer can smooth a recorded trace, but it cannot art-direct the movement between meaningful actions. A single continuous replacement path is also too coarse: pauses and clicks need to remain separate so each move can receive its own preset without making the cursor drift during an intended stop. Once split, those sections also need fast navigation and batch styling rather than repetitive per-item setup.
User impact
Editors place the playhead before recorded cursor activity and use the cursor-motion action. OpenScreen builds separate timeline items for moves and holds through the subsequent recorded clicks. Each item can be selected, styled, and sped up independently. Existing one-piece regions can be auto-split, and any selected item can be split manually at the playhead.
Increasing speed compresses motion into the end of the section, so the cursor waits longer at its source and still reaches the recorded click at exactly the original timestamp. Editors can then copy the chosen preset, speed, turns, and easing to all move sections without copying path-specific control handles.
The motion data uses normalized capture coordinates, so the editor representation is independent of Windows DPI and monitor layout. Preview and export share the same trajectory evaluator. Telemetry gaps (for example, when the cursor leaves the captured display) are not treated as false rests.
Validation
npx tsc --noEmit.npm run build-vite.Notes